# index-less stem nodes
01 1 2N, 2N+1
02 03 2 2N, 2N+1
04 05 06 07 4 2N, 2N+1
08 09 10 11 12 13 14 15 8
(0)
01
02 03
0 1 2 3
* this implies 16 - 31 are leaf nodes. If, however, a stem node split plane val is NaN, this implies that we should look at a leaf node instead.
* The LSB of the final row of nodes could be used as a niche to indicate whether the children are dynamic stem nodes, or leaf nodes, obv at the loss of 1 bit of precision (which may not be noticeable as the bucket likely covers more than one bit of dynamic range and will have the full position range).
* when setting the split value of the last row of nodes, initially always choose a split value with the LSB clear. this indicates that the children
* are actual leaves.
* if a leaf fills and needs splitting, and its parent is a main stem, set the LSB of the main stem's split plane, to indicate that the children will be dynamic stem nodes.
* when dynamic stem nodes are first required, allocate a Vec<> of size 16 in the case above. static stem child indices are assumed to be (2N - 16) and (2N - 15).
* the dynamic stem nodes can be assumed to use the MSB to indicate whether their child is a leaf node or another dynamic node. a SET MSB indicates a leaf node child, of index n-MSB, as per kiddo v2.
* when a top-level dstem is required, two must be created
* leaf nodes are initially a vec with capacity of log2(cap).
* use maybeuninit and Vec::from_raw_parts when creating the leaf vec
If 08-15 are attempted to be split?
1) just allocate 16-31 and continue
2) rebalance the tree
3) introduce a dynamic stem layer that does contain child node indices
initial state:
Stem split vals: [NaN, ...]
dynamic stem nodes: None
leaf nodes: [0-15 exist but only 0 is initialized]
when leaf 0 splits:
Stem split vals: [n, NaN, ...]
dynamic stem nodes: None
leaf nodes: [0-15 exist but only 0 and 8 initialized]
if leaf 0 now splits again:
Stem split vals: [n, n, NaN, ...]
dynamic stem nodes: None
leaf nodes: [0-15 exist but only 0, 4, and 8 initialized]
if leaf 0 now splits again:
Stem split vals: [n, n, NaN, n, NaN, ...]
dynamic stem nodes: None
leaf nodes: [0-15 exist but only 0, 2, 4, and 8 initialized]
if leaf 0 now splits again:
Stem split vals: [n, n, NaN, n, NaN, NaN, NaN, n, Nan...]
dynamic stem nodes: None
leaf nodes: [0-15 exist but only 0, 1, 2, 4, and 8 initialized]
### 32/455191
#### Desired Qty
01:32
02:31 03:1
04:16 05:15 06:1 07:0
08:8 09:8 10:7 11:8 12:1 13:0 14:0 15:0
#### Desired Shift
01:1
02:0 03:0
04:0 05:1 06:0 07:0
08:0 09:0 10:1 11:0 12:0 13:0 14:0 15:0
4 4 4 4